#include <my_header.h>
//  程序执行首先会执行timer.it_value.tv_sec的时间倒数计时和usec的秒数 执行完毕会调用
//  func函数执行 之后会循环执行timer.it_interval.tv_sec = 2;和usec在调用func 
//  一直循环直至杀死
/* Usage: ./17_setitimer */
void func(int sig_val)
{
    printf("sig_val :%d\n", sig_val);
}
int main(void){                                  
    // 设置SIGALRM的处理信号函数
    signal(SIGALRM, func);

    struct itimerval timer;
    memset(&timer, 0, sizeof(timer));
    // 第一次执行时间 会输出
    timer.it_value.tv_sec = 10;
    timer.it_value.tv_usec = 0;
    // 剩余时间输出
    timer.it_interval.tv_sec = 2;
    timer.it_interval.tv_usec = 0;

    setitimer(ITIMER_REAL, &timer, NULL);
    // 循环打印
    while(1)
    {
        sleep(1);
        struct itimerval get_time;
        memset(&get_time, 0, sizeof(get_time));
        getitimer(ITIMER_REAL, &get_time);
        printf("this time remainder. sec: %ld; usec: %ld  \n",
               get_time.it_value.tv_sec,
               get_time.it_value.tv_usec);
    }
    return 0;
}


